package com.punai.config.controller;

import com.punai.common.core.controller.BaseController;
import com.punai.common.core.domain.AjaxResult;
import com.punai.common.core.page.TableDataInfo;
import com.punai.config.service.ConfigTemplateService;
import com.punai.config.sqlitedomain.bo.StructureLinkItemBo;
import com.punai.config.sqlitedomain.vo.ConfigDeleteStructLinkItemVo;
import com.punai.config.sqlitedomain.vo.ConfigTemplateItemVo;
import com.punai.config.sqlitedomain.vo.ConfigUpdateStructLinkItemVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
@RequestMapping("/config/indicatorTemplateItem")
public class ConfigTemplateItemController extends BaseController {

    @Autowired
    private ConfigTemplateService configTemplateService;

    @PreAuthorize("@ss.hasPermi('config:indicatorTemplateItem:list')")
    @GetMapping("/getTemplateUsedItemList")
    public AjaxResult getTemplateUsedItemList(ConfigTemplateItemVo vo) {
        List<StructureLinkItemBo> structureLinkItemBos = configTemplateService.selectUsedItemList(vo);
        return AjaxResult.success(structureLinkItemBos);
    }

    @PreAuthorize("@ss.hasPermi('config:indicatorTemplateItem:list')")
    @GetMapping("/getTemplateNoUsedItemList")
    public TableDataInfo getTemplateNoUsedItemList(ConfigTemplateItemVo vo) {
        return configTemplateService.selectNoUsedItem(vo);
    }

    @PreAuthorize("@ss.hasPermi('config:indicatorTemplateItem:add')")
    @PostMapping("/saveItemList")
    public AjaxResult saveItemList(@RequestBody ConfigTemplateItemVo vo) {
        configTemplateService.saveItem(vo.getStructId(), vo.getTemplateId(), vo.getItemPid(), vo.getItemIds());
        return AjaxResult.success();
    }
    @PreAuthorize("@ss.hasPermi('config:indicatorTemplateItem:edit')")
    @PutMapping("/updateStructLinkItem")
    public AjaxResult updateStructLinkItem(@RequestBody ConfigUpdateStructLinkItemVo vo) {
        configTemplateService.settingItem(vo);
        return AjaxResult.success();
    }
    @PreAuthorize("@ss.hasPermi('config:indicatorTemplateItem:remove')")
    @DeleteMapping("/deleteStructLinkItem")
    public AjaxResult deleteStructLinkItem(@RequestBody ConfigDeleteStructLinkItemVo vo) {
        String id = vo.getId();
        String structId = vo.getStructId();
        String templateId = vo.getTemplateId();
        configTemplateService.removeItem(id,templateId,structId);
        return AjaxResult.success();
    }
    @PreAuthorize("@ss.hasPermi('config:indicatorTemplateItem:edit')")
    @PutMapping("/updateSort/{id}/{targetId}")
    public AjaxResult updateSort(@PathVariable("id") String id, @PathVariable("targetId") String targetId) {
        configTemplateService.updateItemSort(id,targetId);
        return AjaxResult.success();
    }

}


